package io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
 * 对象反序列化
 */
public class OISDemo {
    public static void main(String[] args) throws IOException ,ClassNotFoundException {
        FileInputStream fis = new FileInputStream("person.obj");
        ObjectInputStream ois = new ObjectInputStream(fis);
            /*
            反序列化时可能抛出以下异常：
            java.io.InvalidClassException
            原因：
            读取的这个对象的版本号与当前Person类的版本号不一致造成的。
            这是因为该对象写入文件后，Person类修改过，所以文件里的对象版本号与当前类的版本号不一致了。

            解决：
            可以自行指定Person的版本号，这样一来就算Person类修改过，我们不修改版本号，
            那么以前用这个版本号写出的对象还是可以读取回来的。否则当前类会被系统
            生成一个版本号，这导致该类只要改过内容版本号一定改变！
             */
        Person p = (Person)ois.readObject();
        System.out.println(p);
        ois.close();
    }
}
